<template>
  <div></div>
</template>

<script setup lang="ts">
// 没有对payload检验的
// const emit = defineEmits(["change", "update"]);

// 有对 payload 做校验的 JS 玩法
// const emit = defineEmits({
//   change: (name, age) => {
//     if (typeof name === 'string') {
//       return true
//     }
//   }
// })

// 有对 payload 做校验的 TS 玩法, 旧
// const emit = defineEmits<{
//   (e: "change", name: string, age?: number): void;
// }>();

// 有对 payload 做校验的 TS 玩法, 新

const emit = defineEmits<{
  change: [string, number];
}>();

emit("change", "zhangsan", 18);
</script>
